package common.exception.code;

/**
 * @enumName: CommonErrorCode
 * @description: 网关、系统等通用异常码，统一全局通用错误码
 * @author: lanyukai
 * @date: 2024/6/5 16:12
 * @since 1.0
 **/
public enum CommonErrorCode implements IErrorCode{
    /**
     * 禁止访问，服务器拒绝客户端请求
     */
    ACCESS_NOT_PERMIT("C200","禁止访问，系统拒绝前端请求"),
    /**
     * 错误网关，系统收到无效响应
     */
    GATEWAY_INCORRECT("C201", "错误网关，系统收到无效响应"),
    /**
     * 服务不可用，可能由于超载或停机维护
     */
    SERVER_STOP_USE("C202","当前系统处于停用状态，服务不可用"),
    /**
     * 网关超时，没有及时收到服务器请求
     */
    GATEWAY_OVERTIME("C203","网关超时，没有及时收到系统请求"),
    /**
     * 没有找到指定路由
     */
    GATEWAY_ROUTE_NOT_FOUND("C204","没有找到指定路由"),
    /**
     * 系统请求超时，指定时间内没有收到应答
     */
    SERVER_RECEIVE_REQUEST_OVERTIME("C205","系统请求超时，指定时间内没有收到应答"),
    /**
     * 未定义
     */
    UNDEFINED("C000", "未定义");
    ;
    /**
     *  错误码
     */
    private String code;
    /**
     *  消息
     */
    private String message;

    CommonErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
    /**
     * 依据错误码取得消息
     * @param: code 错误码
     * @return: 错误信息
     */
    public  String msg(String code) {
        return  CommonErrorCode.valueOfcode(code).message;
    }
    /**
     * 根据code返回枚举对象
     * @param code 错误码
     * @return 枚举对象
     */
    public static CommonErrorCode valueOfcode(String code){
        for (CommonErrorCode errorCode : CommonErrorCode.values()) {
            if (errorCode.getCode().equals(code)) {
                return errorCode;
            }
        }
        return UNDEFINED;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
